/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.biblioteca.bl;

import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.its.dsw2.biblioteca.Categoria;
import mx.its.dsw2.biblioteca.CategoriaDeLibro;
import mx.its.dsw2.biblioteca.Libro;
import mx.its.dsw2.biblioteca.dao.CategoriaDeLibroDaoLocal;
import mx.its.dsw2.biblioteca.dao.LibroDaoLocal;
import mx.its.dsw2.biblioteca.enumeracion.EstadoTransaccion;

/**
 *
 * @book Piter
 */
@Stateless
public class LibroBl implements LibroBlLocal {
    @EJB
    private CategoriaDeLibroDaoLocal categoriaDeLibroDao;
    @EJB
    private LibroDaoLocal libroDao;

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

    @Override
    public EstadoTransaccion Register(Libro book, List<Categoria> categories) {
         if(libroDao.findDuplicity(book)){
             return EstadoTransaccion.INCOMPLETO;
         }else{
             libroDao.create(book);
             for(Categoria c: categories){
                 CategoriaDeLibro cdl=new CategoriaDeLibro();
                 cdl.setIdCategoria(c);
                 cdl.setIdLibro(book);
                 categoriaDeLibroDao.create(cdl);
             }
             return EstadoTransaccion.COMPLETO;
         }
    }

    @Override
    public EstadoTransaccion modify(Libro book, List<Categoria> lista) {
         libroDao.edit(book);
         List<CategoriaDeLibro> old = book.getCategoriaDeLibroList();
         for(CategoriaDeLibro c : old){
             categoriaDeLibroDao.remove(c);
         }
    for(Categoria c: lista){
        CategoriaDeLibro cdl=new CategoriaDeLibro();
        cdl.setIdCategoria(c);
        cdl.setIdLibro(book);
        categoriaDeLibroDao.create(cdl);
    }
    
    
    return EstadoTransaccion.COMPLETO;
        }
    

    @Override
    public EstadoTransaccion delete(Libro book) {
        if(book.getId()==null || libroDao.find(book.getId())==null){
            return EstadoTransaccion.INCOMPLETO;
         }
    else{
    libroDao.remove(book);
    return EstadoTransaccion.COMPLETO;
        }
    }
     public List<Libro> getAll() {
        return libroDao.findAll();
    }
    
    

}
